﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A91数组
{
    //一维数组
    class Program
    {
        //定义数组和访问元素
        static void Main1(string[] args)
        {
            int[] array;//定义数组变量
            array = new int[4];//创建数组能放4个元素的 对象并赋值给array     数组是引用类型

            array[0] = 5;//给第0个元素赋值
            Console.WriteLine(array[0]);//输出第0个元素 5
            Console.WriteLine(array[1]);// 0
            //Console.WriteLine(array[4]); 运行时报错,超出索引界限

            //练习  创建一个字符串数组  存储    "C#"  "java" "python"  "c++"
            string[] array1 = new string[4];
            array1[0] = "C#";
            array1[1] = "Java";
            array1[2] = "Python";
            array1[3] = "C++";
            Console.WriteLine(array1[1]);
        }
        //简写和遍历元素
        static void Main2(string[] args)
        {
            int[] arry =  { 5, 6, 7 ,6,9};

            //for遍历
            for (int i = 0; i < arry.Length; i++)
            {
                Console.WriteLine(arry[i]);
            }
            Console.WriteLine("------------------------------------------");
            //foreach 遍历
            foreach (var item in arry)
            {
                Console.WriteLine(item);
            }
        }
        //练习 整数数组元素累加和
        static void Main3(string[] args)
        {
            int[] arry = { 5, 6, 7, 6, 9 };
            int sum = 0;
            for (int i = 0; i < arry.Length; i++)
            {
                sum += arry[ i];
            }
            Console.WriteLine(sum);
        }
        //练习求数组最大值
        static void Main4(string[] args)
        {
            int[] arry = { 5, 6, 9, 7, 6, 1 };
            int max = arry[0];//假设开头的就是最大的
            for (int i = 1; i < arry.Length; i++)
            {
                if (arry[i]>max)//如果当前元素比max还大
                {
                    max = arry[i];//max换成array[i]
                }
            }
            Console.WriteLine(max);
        }
    }

    //演示二位数组
    class MyClass
    {
        //定义二位数组和访问数组元素
        static void Main1(string[] args)
        {
            //定义变量和创建对象
            int[,] array = new int[ 2,3 ]; //2行3列的二维数组
            //访问元素
            array[1, 1] = 7;
            Console.WriteLine(array[1,1]);
        }
        //简写和遍历
        static void Main2(string[] args)
        {
            int[,] array = 
            {
                {1,6,0,0},
                {0,2,7,0},
                {0,0,3,8},
            };

            //遍历  array.GetLength(0) 行长度    array.GetLength(1) 列长度   
            for (int r = 0; r < array.GetLength(0); r++) //r表示第几行
            {
                for (int c = 0; c < array.GetLength(1); c++)//c表示当前行的第几列
                {
                    Console.Write(array[r,c]);//输出第r行c列的元素
                }
                Console.WriteLine();//换行
            }
        }
        
    }

    //演示交错数组  数组的数组  数组的元素还是数组    每一个内层数组的长度可以不一样
    class MyClass1
    {
        static void Main(string[] args)
        {
            int[] [] array = new int[2] []; //能转两个数组的   数组
            array[0] = new int[3] { 2, 3, 4 };
            array[1] = new int[2] { 7,8};
            for (int i = 0; i < array.Length; i++)//遍历外层数组
            {
                int[] subArray = array[i];//拿到内层数组
                for (int j = 0; j < subArray.Length; j++)//遍历内层数组
                {
                    Console.Write(subArray[j]);
                }
                Console.WriteLine();//换行
            }
        }
    }
}
